package main

import "fmt"

func myfunc15_1() func() int {
	var x int
	return func() int {
		x++
		return x * x
	}
}
func main() {
	test := myfunc15_1()

	fmt.Println(test())
	fmt.Println(test())
	fmt.Println(test())
	fmt.Println(test())
	fmt.Println(test())

	//	结果
	//1
	//4
	//9
	//16
	//25

	//  返回值为一个匿名函数，返回一个函数类型， 通过f调用返回的匿名函数，f来调用闭包函数
	// 它不关心这些捕获了的变量和常量是够已经超出了作用域
	// 所以只要闭包还在使用它，这些变量就还会存在

}
